package com.atguigu.gmall.order.receiver;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.common.util.HttpClient;
import com.atguigu.gmall.order.service.OrderService;
import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 监听支付结果的消费者
 * @author 搭忆长安
 * @version 1.0
 * @date 2021年07月13日 19:40
 * @ClassName:OrderUpdateConsumer
 * @Description: TODO
 */
@Component
public class OrderUpdateConsumer {

    @Autowired
    private OrderService orderService;

    @Value("${weixin.pay.appid}")
    private String appid;
    @Value("${weixin.pay.partner}")
    private String partner;
    @Value("${weixin.pay.partnerkey}")
    private String partnerkey;
    @Value("${weixin.pay.notifyUrl}")
    private String notifyUrl;
    /**
     * 监听订单支付结果的消费者的实现方法
     * @param msg
     */
    @RabbitListener(queues = "order_pay_queue_wx")
    public void updateOrderwx(String msg){
       //进行转换
        Map<String,String> map = JSONObject.parseObject(msg, Map.class);
        //进行解析
        String returnCode = map.get("return_code");
        String outTradeNo = map.get("out_trade_no");
        if(returnCode.equals("SUCCESS")){
            //获取交易的结果
            String resultCode = map.get("result_code");
            if(resultCode.equals("SUCCESS")){
                //支付成功 修改订单的状态
                orderService.paySuccess(map,0);
                return;
            }
        }
        //支付失败 修改订单的状态
        orderService.payFail(map);
    }

    @RabbitListener(queues = "order_pay_queue_zfb")
    public void updateOrderZfb(String msg){
        //进行转换
        Map<String,String> map = JSONObject.parseObject(msg, Map.class);
        //进行解析
        String tradeStatus = map.get("trade_status");
        String outTradeNo = map.get("out_trade_no");
        if(!StringUtils.isEmpty(tradeStatus) && tradeStatus.equals("TRADE_SUCCESS")){
           //支付成功，修改订单的状态
            orderService.paySuccess(map,1);
            return;
        }
        //支付失败 修改订单的状态
        orderService.payFail(map);
    }
}
